Method and system for generating an annotated network topology

ABSTRACT

A method of generating an annotated network topology of a network is described. The method includes determining available bandwidth “B” of a network on a network path connecting a pair of endpoints by performing Transfer Control Protocol (TCP) flows between the pair of endpoints, the network having a plurality of network paths, identifying a bottleneck link in the network path, and annotating all edges in a network path, wherein available bandwidth annotation of links inside the network is determined using end-to-end network measurements. A system for generating the annotated network topology of a network is also described.

BACKGROUND OF THE INVENTION

1. Field of the Invention

Aspects of the invention generally relate to methods and systems forgenerating an annotated network topology, and more particularly, forgenerating an annotated network topology between endpoints of a networkusing end-to-end measurements.

2. Description of the Related Art

Network performance and availability are determinants of anapplication's end-to-end performance and user experience. However, thedistributed and decentralized nature of network resources makesperformance management a difficult problem.

Some prior art methods and systems use latency annotation tools todetermine network performance and availability.

Other related art methods and systems use topology-unaware bandwidthannotation tools. However, such methods and systems provide incorrectestimates of available bandwidth when path sharing occurs in theunderlying topology. That is, sharing of paths is not taken into accountin the related art methods and systems. In addition to inaccuracy, notaccounting for sharing may lead to redundant probes when links fail.

On the other hand, some prior art methods and systems attempt to providesolutions for bottleneck identification on an individual path. However,monitoring traffic can be very intrusive to existing network traffic.Further, such prior art methods and systems use bottleneckidentification tools that could flood the network.

Still other related art methods and systems use tools that requirenetwork device support (e.g., network router support). However, suchtools can only be used by network operators (e.g., telecommunicationcompanies) and/or on the subparts of the network owned by them. Thus,such related art methods would require an unrealistic assumption formost networks.

Therefore, there is a need to overcome the above-identified problems assuch prior art tools are not viable for production usage.

SUMMARY OF THE INVENTION

In view of the foregoing and other exemplary problems, drawbacks, anddisadvantages of the conventional methods and structures, an aspect ofthe invention provides a method and system for generating a network pathannotation service. More particularly, an aspect of the inventionrelates to generating an annotated network topology between endpoints ofa network using end-to-end measurements, in which the annotated networktopology is annotated based on one or more of available bandwidth,latency, and loss rate.

Exemplary aspects of the present invention are directed to a system andmethod for generating a network path annotation service, and moreparticularly, for generating an annotated network topology betweenendpoints of a network using end-to-end measurements, in which theannotated network topology is annotated based on available bandwidth,latency, and loss rate.

In one aspect, a method of generating an annotated network topology of anetwork is described. The method includes determining availablebandwidth “B” of a network on a network path connecting a pair ofendpoints by performing Transfer Control Protocol (TCP) flows betweenthe pair of endpoints, the network having a plurality of network paths,identifying a bottleneck link in the network path, and annotating alledges in a network path, wherein available bandwidth annotation of linksinside the network and edge bandwidths is determined using end-to-endnetwork measurements.

In another aspect, a system for generating an annotated network topologybetween endpoints of an application running on a network includes acontrolling circuit for determining available bandwidth “B” of a networkon a network path connecting a pair of endpoints by performing TransferControl Protocol (TCP) flows between the pair of endpoints, the networkhaving a plurality of network paths; the controlling circuit configuredto identify a bottleneck link in the network path, and annotate alledges in a network path, wherein available bandwidth annotation of linksinside the network and edge bandwidths is determined using end-to-endnetwork measurements.

In a further aspect, a method for deploying an application forgenerating an annotated network topology of a network includes providinga computer infrastructure being operable to determine availablebandwidth “B” of a network on a network path connecting a pair ofendpoints by performing Transfer Control Protocol (TCP) flows betweenthe pair of endpoints, the network having a plurality of network paths.The computer infrastructure is further configured to identify abottleneck link in the network path, and annotate all edges in a networkpath, wherein available bandwidth annotation of links inside the networkand edge bandwidths is determined using end-to-end network measurements.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing and other exemplary purposes, aspects and advantages willbe better understood from the following detailed description of anexemplary embodiment of the invention with reference to the drawings, inwhich:

FIG. 1 illustrates a high level schematic of a set of network-connectedhosts/machines to provide an annotated topology of a network connectingthe hosts.

FIG. 2 illustrates an un-annotated network topology between networkendpoints illustrated in FIG. 1.

FIGS. 3(A)-3(B) illustrate exemplary steps of annotating each of thenetwork links in the network topology shown in FIG. 2.

FIG. 4 illustrates an exemplary annotated network topology.

FIG. 5 illustrates an implementation architecture in accordance with anexemplary embodiment of the present invention.

FIGS. 6A and 6B illustrate a methodology used in accordance with variousembodiments of the present invention.

FIG. 7 illustrates a methodology for detecting a bottleneck link in anetwork path illustrated in FIG. 1.

FIG. 8 illustrates an exemplary hardware/information handling system forgenerating a network path annotation service in accordance with anembodiment of the present invention.

FIG. 9 illustrates a signal bearing medium (e.g., storage medium) forstoring information related to the method steps identified in FIGS. 6Aand 6B.

FIG. 10 illustrates an exemplary RAID array (e.g., storage medium) forstoring program code configured to perform the methodology identified inFIGS. 6A and 6B.

It is noted that the drawings of the invention are not to scale. Thedrawings are intended to depict only typical aspects of the invention,and therefore should not be considered as limiting the scope of theinvention. In the drawings, like numbering represents like elementsbetween the drawings.

DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS OF THE INVENTION

FIG. 1 illustrates an exemplary high-level network topology 100 toillustrate various aspects of the invention. The network topology 100discloses a plurality of hub locations representing a set of end points102, 104, 106, 108, 110, 112 in order to generate a topological map of anetwork. For example, for ease of illustration, the network topology 100shows locations of network hubs in cities, states, universities, and soforth. The number of end points shown is merely for purpose ofillustration. It will be appreciated that more or less number of endpoints can be used.

FIG. 2 depicts an exemplary topological map 200 that can be derived fromthe network topology 100 as shown in FIG. 1 with given a set ofendpoints 102, 104, 106, 108, 110, and 112 (e.g., hub locations inMaryland, Boston, Cambridge, San Diego, etc.). The topological map 200or a view of the network connecting the endpoints 102-112 can be derivedby connecting the endpoints 102-112 as illustrated in FIG. 2. Theendpoints 102-112 are connected via nodes. For example, the network pathconnecting endpoints 102 and 118 includes nodes 202, 204, 206, 208, 210and 214. A network edge connects each of the nodes to another node. Forexample, nodes 202 and 204 are connected via a network edge 220.Similarly, nodes 202 and 216 are connected via a network edge 218. Thenetwork edges 218 and 220 are alternatively referred to herein asinternal edges as the edges are internal to the network 200. Asillustrated in FIG. 2, each of the numbers shown within a node are nodeidentifiers for that respective node.

FIGS. 3A-3B illustrate various ways of annotating the topologicalnetwork 200 shown in FIG. 2. For example, the topological view 200 canbe annotated using available bandwidth, delay, and loss rates in variousparts of the network.

As illustrated in FIGS. 3(A)-3(B), routing constraints between pairs ofend points preferably are captured by creating a topological map (e.g.,an Internet Protocol (IP) level topological map) of the network. Thetopological map of the network preferably includes constraints onrouting and exposes path sharing, which are beneficial for capturingconstraints on packing an application's bandwidth demand within thenetwork capacity. Also, the edges of the resulting topological map areannotated with latency and available bandwidth.

Continuing to refer to FIGS. 3(A)-3(B), at each step, a network link maybe annotated with an equality (=), representing that the link has beenannotated, or an inequality (>), representing that the link's annotationcould be further refined using subsequent steps in the algorithm. Anequality can result when the link was fully saturated in somemeasurement step in the algorithm. Inequalities can indicate that thelink has not been fully saturated during any measurement, and hence morecapacity in the link could be available.

As an example, in FIG. 3A, network links 302, 304 which are marked boldindicate the edges whose annotation has been finalized in that step ofthe algorithm. For example, the edge 302 connected to the node marked“Marylando” is annotated with 3.58, which indicates that the availablebandwidth on the edge 302 is known to be 3.58 Megabits per second, andthat annotation of the edge 302 has been finalized. Other edges, whichare either unmarked, or annotated with inequalities, represent edgeswhose annotation can be further refined by subsequent steps of themethodology.

FIG. 4 shows a map of a network 400 wherein each of the internal edges218 and 220 of the graphs are annotated with the available bandwidth.

As shown in FIG. 4, the final annotation of the network, at the end ofthe algorithm's execution, could include both equalities (=) andinequalities (>). The final state of the network represents the maximuminformation that can be derived about the network's annotation fromend-to-end measurements.

As referred to herein, an end-to-end measurement is defined as ameasurement between two network endpoints. Endpoints are further definedas machines (e.g., devices, systems, apparatus) that connect to anetwork and use the network to communicate with other machines, asopposed to network routers and switches, which are used in a network toforward data between machines.

Bandwidth annotation is generally used to express capacity constraintsand latency annotation is used to express performance constraints. Forexample, latency annotation can be obtained using per-hop delaysreported by tracing a route using standard Internet utilities like“traceroute”.

As described herein, the term “available bandwidth” defines the amountof bandwidth that an application can get by opening one or moreTransmission Control Protocol (TCP) flows. Available bandwidth asdescribed herein is different from raw bandwidth of a link, or bandwidthobtained by a User Datagram Protocol (UDP) flow.

In another exemplary aspect, the present invention is capable ofefficiently obtaining the annotations (e.g., deriving the annotations)purely from end points of the network. For example, by conductingexperiments between agents that run on the end points, it would bepossible to derive internal information about the network (e.g.,internal link, available bandwidth at a link, locations of bottlenecks,etc.) using end-to-end measurements. Thus, the exemplary aspects of thepresent invention are capable of annotating the network using end-to-endmeasurements.

FIG. 5 shows a high-level architectural schematic of a networkperformance management service 500 in accordance with an embodiment ofthe present invention. The management service 500 includes anoptimization solver unit 502, a data acquisition unit 504, a deploymentengine unit 506, a network 508 having a plurality of agents 510, 512,514, and a plurality of network end points 516, 518, 520. Respectiveagents are configured to operate on respective network end points. Forexample, agent 510 is configured to operate on network end point 516 andagent 512 is configured to operate on network end point 518, and so onand so forth. An algorithm (e.g., intelligent algorithm) can be used toorchestrate experiments between the agents (e.g., 510, 512, 514) todetermine the annotation.

Continuing to refer to FIG. 5, the data acquisition unit 504 (e.g., acentralized coordinator or controller) is preferably employed to executean algorithm which can intelligently orchestrate experiments betweennetwork endpoints (e.g., 516, 518, 520) to arrive at an annotated viewof the network. In one embodiment, the algorithm can be the methodologyillustrated in FIGS. 6A and 6B. The data acquisition unit 504 is capableof orchestrating experiments between the network end points 516, 518,520 to successfully find the view of the network between the network endpoints and also a complete annotated view of the network.

The data acquisition unit 504 is configured to monitor and collect datafrom the agents (e.g., 510, 512, 514) to create the annotated graphbetween the network endpoints 516, 518, 520. The collected data is inputto the optimization solver unit 502 to determine an appropriate settingto meet the application's performance requirement. The optimizationsolver unit 502 may utilize one of several known optimization algorithmsto determine the appropriate setting. For example, algorithms forsolving combinatorial optimization problems can be used. The determinedsettings are converted (e.g., by the deployment engine unit 506), forexample, to Extensible Mark-up Language (XML) configuration files andsent to the plurality of agents (510, 512, 414) for carrying out anyrequired local configuration/control actions.

FIG. 6A shows a flowchart disclosing the methodology used in apre-processing stage for determining annotated network topology betweenendpoints of a network in accordance with an embodiment of theinvention.

At a step 602, a set of network endpoint addresses, are received as aninput, for which it is desired to obtain an annotated network topology.The method then proceeds to step 604.

At a step 604, a route tracing utility (e.g., traceroute) is performedto determine an un-annotated network topology between each pair of theendpoints. The method then proceeds to step 606.

At a step 606, initial annotation of each edge in the un-annotatedtopology is set to be zero. The method then proceeds to step 608.

At a step 608, for each pair of the endpoints, a TCP flow is performedbetween each pair of endpoints in order to determine the availablebandwidth “B” on a network path connecting the endpoints. The methodthen proceeds to step 610.

At a step 610, each link/edge in the network path identified in step 610is annotated with the maximum of the available bandwidth “B” and theedge's current annotation. The method then proceeds to step 612.

At a step 612, the edge identified to be the path bottleneck isannotated with the maximum available bandwidth “B”. Steps 608 through612 are repeated for each pair of the endpoints.

Bottleneck identification is a primitive used by various aspects of theinvention. Bottleneck identification is a method to identify which linkon a network path has the least available bandwidth. Such methoddetermines how much bandwidth is available on the entire network path. Afeature of the invention is the identification of a bottleneck link on anetwork path without perturbing other traffic sharing the same path.This method of identifying bottlenecks works in conjunction with the TCPprotocol, and is illustrated in FIG. 7.

FIG. 6B shows a flowchart disclosing the methodology used in a recursivestage for determining annotated network topology between endpoints of anetwork in accordance with an embodiment of the invention. In themethodology illustrated in FIG. 6B, annotation of the network topologyobtained in the pre-processing stage is further refined until a pointwhere it is no longer possible to further refine the network'sannotation.

The methodology starts at the innermost loop, as illustrated in FIG. 6B,and iterates over all the edges in the graph to determine if annotationof any edge can be further refined. If it is determined that annotationof an edge can be further refined, then the variable “changed” is set totrue at step 613. The method then proceeds to step 614.

At a step 614, an inquiry is made to determine if the variable ischanged to “true” or not. If the variable is changed to true, the methodproceeds to step 616. Otherwise the method terminates when an iterationover all edges does not change the annotation of any edge.

At a step 616, if the annotation of an edge cannot be further refined,then the variable is set to “false.” The method then proceeds to step618.

At a step 618, for each edge E that has an annotation of an inequality(“>”), the amount of data that can be sent through a respective edge Eis determined given the various edges that feed into the respective edgeE. Such determination is herein defined as “maxflow computation” andalternatively referred as “maxflow” (M). The method then proceeds tostep 620.

At a step 620, given the maxflow M, a subset of paths S that passthrough edge E is chosen such that the bandwidth of the paths is greaterthan or equal to M. The paths in the set S are then activated, i.e., TCPflows are started between the paths in order to drive an amount oftraffic M through an edge E. The method then proceeds to step 622.

At a step 622, the total throughput achieved by all the TCP flows, i.e.the sum of the traffic rates of the TCP flows that were activated asidentified in step 620 is measured. The total throughput is identifiedherein as “T”. The method then proceeds to step 624.

At a step 624, an inquiry is made to determine if T<M. If true, themethod proceeds to step 628. Otherwise, the method proceeds to step 630.

At a step 628, the edge E is marked with annotation “=T” indicating thatsuch edge E has been saturated.

At a step 630, if T=M, then the edge E is still not saturated. If E wascurrently annotated as “>N”, and N<M, then an edge E is marked with theannotation “>M”.

In this manner, the methodology illustrated in FIG. 6B iterates over alledges with annotations of inequalities. When the method ends, an inquiryis made to determine if any annotation was refined. If true, steps 616through 630 are iterated. Otherwise, the method terminates and deliversthe current network annotation as an output.

The data acquisition unit 504 (FIG. 5) is capable of running themethodology illustrated in FIGS. 6A and 6B to intelligently orchestrateexperiments between network endpoints to arrive at an annotated view ofthe network. As mentioned above, the end points have a plurality ofagents running on them. The coordinator according to the presentinvention is capable of orchestrating some experiments between these endpoints to not only successfully find the view of the network betweenthem but also find the complete annotated view.

FIG. 7 illustrates a methodology for detecting a bottleneck link in anetwork path illustrated in FIG. 1. The TCP protocol between a senderand receiver connected over a network path operates by increasing therate (e.g., sending rate) at which data is sent from the sender to thereceiver, thus probing for available bandwidth in the network. When theTCP protocol detects a packet loss, the sending rate is decreased andthe probing process is repeated by increasing the sending rate. When thesending rate is increased, the delay experienced by packets at each linkincreases. However, the property of the bottleneck link on a path isthat it shows the highest increase in delay. This delay can be measuredby running the traceroute utility on the path together with the TCP flowas traceroute reports the per-hop delay experienced by packets. Thus,various aspects of the invention utilize traceroute and TCP inconjunction in order to infer the bottleneck link on a network path.

Thus, using the technique illustrated in FIG. 7, if a certain edge E ina network path is identified to be the bottleneck link, it is annotatedwith “=B” as it is realized that edge E is the constraining link in theend-to-end path and the bandwidth of the end-to-end path is B.

FIG. 8 illustrates hardware configuration of an informationhandling/computer system for use with the invention and which preferablyhas at least one processor or central processing unit (CPU) 811.

The CPUs 811 are interconnected via a system bus 812 to a random accessmemory (RAM) 814, read-only memory (ROM) 816, input/output (I/O) adapter818 (for connecting peripheral devices such as disk units 821 and tapedrives 840 to the bus 812), user interface adapter 822 (for connecting akeyboard 824, mouse 826, speaker 828, microphone 832, and/or other userinterface device to the bus 812), a communication adapter 834 forconnecting an information handling system to a data processing network,the Internet, an Intranet, a personal area network (PAN), etc., and adisplay adapter 836 for connecting the bus 812 to a display device 838and/or printer.

In addition to the hardware/software environment described above, adifferent aspect of the invention includes a computer-implemented methodfor performing the method described in accordance with an embodiment ofthe invention and described above with respect to FIGS. 6 a-6B. As anexample, this method may be implemented in the particular environmentdiscussed above.

Such a method may be implemented, for example, by operating a computer,as embodied by a digital data processing apparatus, to execute asequence of machine-readable instructions. These instructions may residein various types of signal-bearing media.

This signal-bearing media may include, for example, a RAM containedwithin the CPU 811, as represented by the fast-access storage.Alternatively, instructions may be contained in another signal-bearingmedia, such as a magnetic data storage or CD-ROM diskette 900 (FIG. 9),directly or indirectly accessible by the CPU 811. Instructions may bestored on a variety of machine-readable data storage media, such as DASDstorage (e.g., a conventional “hard drive” or a RAID array (e.g., 1000in FIG. 10), magnetic tape, electronic read-only memory (e.g., ROM,EPROM, or EEPROM), an optical storage device (e.g. CD-ROM, WORM, DVD,digital optical tape, etc.), paper “punch” cards, or other suitablesignal-bearing media including transmission media such as digital andanalog and communication links and wireless.

In an illustrative embodiment of the invention, the machine-readableinstructions may comprise software object code, compiled from a languagesuch as, for example, “C”, C++, etc. It will be appreciated that aspectsof the invention should not be limited by the language used for creatingsuch aspects.

Additionally, it should be recognized by one of ordinary skill in theart, after taking the present discussion as a whole, that the presentinvention can serve as a basis for a number of business or serviceactivities. All of the potential service-related activities are intendedas being covered by the present invention.

Network performance and availability contribute to the end-to-endperformance and user experience of network applications and services.However, the distributed and decentralized nature of network resourcesmakes performance management a difficult problem. The present inventionprovides a novel system and method for network monitoring which iscapable of planning and adapting an application's network usage. Forexample, the present invention is capable of using knowledge of theperformance of the underlying network connecting the end points of anapplication (i.e., network performance) and the availability of thenetwork to plan and adapt an application's network usage.

By determining such information, decisions can be made regarding routinga client to a particular server (e.g., which network paths to takeand/or servers to which the client should be directed, etc.) that hasthe best network connectivity, the most bandwidth, etc. Suchdetermination can preferably be done without any support from thenetwork infrastructure itself. This is advantageous because the providerof the service or application generally has no control over the networkand probably has limited or no access to monitoring data of the network.

For example, network providers that are operating a network (e.g.,telecommunications companies, such as AT&T, Sprint, etc.) have networkmanagement systems that internally monitor the performance of thenetwork. However, the network providers only have network monitoringdata for the parts of the network they own.

Moreover, this information is generally not available to theapplication. That is, it would be difficult for the application toaccess such information. Generally, monitoring data from network devicesmay not be available to applications running at the network endpoints.

Using the present invention multiple characteristics of the network orapplication can be captured. Exemplary characteristics to be capturedinclude bandwidth (e.g., available bandwidth), latency, loss rates, etc.It is noted that bandwidth annotation and loss rate annotation aredifficult and generally have not been addressed by the related art.

The exemplary aspects of the present invention provide an efficientannotation of network paths that determines the link bandwidths andbottlenecked links based on a network graph and a set of end-points. Theannotation preferably is achieved in a Transmission ControlProtocol-friendly (TCP-friendly) manner and preferably using limitedprobing iterations to determine the bottlenecks in a network path.

An advantage of the exemplary aspects of the present invention is thatit is not intrusive in comparison to related art methods that useUDP-based probes to determine the network capacity. The annotationprocess does not change the dynamics of the existing flows because theprocedure used preferably is based on TCP probes. TCP uses a controlprotocol to adjust its sending rate in response to network feedback,such that it shares the network fairly with the other flows active inthe network. Hence, with a large number of active flows in the network,TCP causes a negligible impact on the sending rate of the other flows.

Aspects of the invention are capable of supporting available bandwidthqueries on the network for simultaneous flows. For example, the presentinvention can support advanced queries like “determine the availablebandwidth when node 1 sends to node 4 AND node 2 sends to node 10” whichmay be correctly answered by a system that does not consider theannotated network topology.

In one embodiment, sharing of paths can imply different answers forindividual path queries and simultaneous multi-path query. The presentinvention also relates to a method or technique to identify bottlenecksin a network for a distributed networked application. Bottlenecks can beexpressed as simultaneous multi-path queries.

While the invention has been described in terms of several exemplaryembodiments, those skilled in the art will recognize that the inventioncan be practiced with modification within the spirit and scope of theappended claims. Further, it is noted that, Applicant's intent is toencompass equivalents of all claim elements, even if amended laterduring prosecution.

1. A method of generating an annotated network topology of a network,comprising: determining available bandwidth “B” of a network on anetwork path connecting a pair of endpoints by performing TransferControl Protocol (TCP) flows between the pair of endpoints, the networkhaving a plurality of network paths; identifying a bottleneck link inthe network path; and annotating all edges in a network path, whereinavailable bandwidth annotation of links inside the network and edgebandwidths is determined using end-to-end network measurements.
 2. Themethod of claim 1, wherein the annotating comprises: annotating an edgeidentified as a bottleneck with an equality “=”; annotating other edgeswith an inequality “>”, the annotating further comprising: annotatingthe plurality of paths with at least one of available bandwidth,latency, and loss rate.
 3. The method of claim 1, wherein the annotatingcomprises saturating the link with traffic such that received networktraffic is less than transmitted network traffic.
 4. The method of claim3, wherein identifying the bottleneck link comprises monitoring a delayin the link as the link is saturated with traffic.
 5. The method ofclaim 4, wherein monitoring the delay comprises monitoring an increasein the delay using a parallel traceroute.
 6. The method of claim 1,further comprising: continuing the annotating until an annotated networktopology of the network is obtained.
 7. The method of claim 1, whereinthe annotating further comprises: computing a maximum flow of trafficfor each edge having an annotation that cannot be further refined;determining a subset of paths that pass through the edge having anannotation that cannot be further refined; initiating TCP flows betweenthe paths in the subset; determining a total throughput achieved by theTCP flows; and annotating an edge as saturated if the throughput is lessthan the maximum flow.
 8. A method of generating an annotated networktopology between endpoints of a network, comprising: receiving addressesof endpoints of a network having a plurality of paths; determining anun-annotated network topology between each pair of the endpoints;determining available bandwidth “B” on a network path connecting a pairof endpoints by performing Transfer Control Protocol (TCP) flows betweenthe pair of endpoints; identifying a bottleneck link in the networkpath; and annotating all edges in a network path, wherein availablebandwidth annotation of links inside the network is determined usingend-to-end network measurements.
 9. The method of claim 8, wherein theannotating comprises: computing a maximum flow of traffic for each edgehaving an annotation that cannot be further refined; determining asubset of paths that pass through the edge having an annotation thatcannot be further refined; initiating TCP flows between the paths in thesubset; determining a total throughput achieved by the TCP flows; andannotating an edge as saturated if the throughput is less than themaximum flow.
 10. The method of claim 8, wherein the annotatingcomprises: annotating an edge identified as a bottleneck with anequality “=”; annotating other edges with an inequality “>”; and theannotating further comprising saturating the link with traffic such thatreceived network traffic is less than transmitted network traffic. 11.The method of claim 8, wherein identifying the bottleneck link comprisesmonitoring a delay in the link as the link is saturated with traffic.12. The method of claim 11, wherein monitoring the delay comprisesmonitoring an increase in the delay using a parallel traceroute.
 13. Themethod of claim 8, further comprising: annotating the plurality of pathswith at least one of available bandwidth, latency, and loss rate.
 14. Asystem for generating an annotated network topology between endpoints ofan application running on a network, comprising: a controlling circuitfor determining available bandwidth “B” of a network on a network pathconnecting a pair of endpoints by performing Transfer Control Protocol(TCP) flows between the pair of endpoints, the network having aplurality of network paths; the controlling circuit configured toidentify a bottleneck link in the network path, and annotate all edgesin a network path, wherein available bandwidth annotation of linksinside the network is determined using end-to-end network measurements.15. The system of claim 14, wherein the annotated network topology isannotated based on at least one of available bandwidth, latency, andloss rate.
 16. The system of claim 14, wherein the system furthercomprises: a plurality of agents running on endpoints of the network,wherein the controlling circuit is configured to control the pluralityof agents to monitor the network.
 17. A program product stored on acomputer useable medium for generating an annotated network topologybetween endpoints of a network, the program product comprising programcode for causing a computer system to perform the following functions:determining available bandwidth “B” of a network on a network pathconnecting a pair of endpoints by performing Transfer Control Protocol(TCP) flows between the pair of endpoints, the network having aplurality of network paths; identifying a bottleneck link in the networkpath; and annotating all edges in a network path wherein availablebandwidth annotation of links inside the network is determined usingend-to-end network measurements.
 18. The program product of claim 17,wherein the annotated network topology is annotated based on at leastone of available bandwidth, latency, and loss rate.
 19. The programproduct of claim 17, wherein the annotating further comprises: computinga maximum flow of traffic for each edge having an annotation that cannotbe further refined; determining a subset of paths that pass through theedge having an annotation that cannot be further refined; initiating TCPflows between the paths in the subset; determining a total throughputachieved by the TCP flows; and annotating an edge as saturated if thethroughput is less than the maximum flow.
 20. A method for deploying anapplication for generating an annotated network topology of a network,comprising: providing a computer infrastructure being operable to:determine available bandwidth “B” of a network on a network pathconnecting a pair of endpoints by performing Transfer Control Protocol(TCP) flows between the pair of endpoints, the network having aplurality of network paths; identify a bottleneck link in the networkpath; and annotate all edges in a network path, wherein availablebandwidth annotation of links inside the network is determined usingend-to-end network measurements.